A Non-Uniform Memory Access (NUMA) machine is a computer memory design where the memory access time to memory location depends on that memory's location relative to the processor that is accessing that memory. A NUMA machine typically includes several nodes, where each node is made up of one or more processors, memory local to that node, and a bus interconnecting the node's processors and memory. Another bus, typically a Peripheral Component Interface (PCI) bus interconnects the NUMA nodes. Memory access time for a processor is dependent on whether the processor accesses the memory that is local to that processor or remote. Memory access time to memory that is remote to the processor can take a longer time than memory that is local because for remote memory accesses the contents of the memory is fetched across the bus interconnecting the NUMA nodes.
In a NUMA machine, network buffers can be allocated in any segment of the memory, whether the memory is local or remote. As in known in the art, network buffers are used to buffer data that is received from the network attached to the NUMA machine. Processes running on different NUMA nodes allocate and deallocate network buffers as the process runs. The problem is that the process can run more slowly if the network buffers consumed by that process are allocated using memory on NUMA nodes that are remote to the NUMA node that is running the process.